home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / TEMP / GNU / bison / RpcalcInpu < prev    next >
Text File  |  1995-06-28  |  2KB  |  40 lines

  1. Rpcalc Input
  2. Previous: <Rpcalc Rules=>RpcalcRulf> * Next: <Rpcalc Line=>RpcalcLine> * Up: <Rpcalc Rules=>RpcalcRulf>
  3.  
  4. #Wrap on
  5. {fH5}Explanation of {fCode}input{f}{f}
  6.  
  7. Consider the definition of {fCode}input{f}:
  8.  
  9. #Wrap off
  10. #fCode
  11. input:    \/\* empty \*\/
  12.         | input line
  13. ;
  14. #f
  15. #Wrap on
  16.  
  17. This definition reads as follows: ``A complete input is either an empty
  18. string, or a complete input followed by an input line''.  Notice that
  19. ``complete input'' is defined in terms of itself.  This definition is said
  20. to be {fUnderline}left recursive{f} since {fCode}input{f} appears always as the
  21. leftmost symbol in the sequence.  \*Note <Recursion=>Recursion>: Recursive Rules.
  22.  
  23. The first alternative is empty because there are no symbols between the
  24. colon and the first {fEmphasis}|{f}; this means that {fCode}input{f} can match an
  25. empty string of input (no tokens).  We write the rules this way because it
  26. is legitimate to type {fCode}Ctrl-d{f} right after you start the calculator.
  27. It's conventional to put an empty alternative first and write the comment
  28. {fEmphasis}\/\* empty \*\/{f} in it.
  29.  
  30. The second alternate rule ({fCode}input line{f}) handles all nontrivial input.
  31. It means, ``After reading any number of lines, read one more line if
  32. possible.''  The left recursion makes this rule into a loop.  Since the
  33. first alternative matches empty input, the loop can be executed zero or
  34. more times.
  35.  
  36. The parser function {fCode}yyparse{f} continues to process input until a
  37. grammatical error is seen or the lexical analyzer says there are no more
  38. input tokens; we will arrange for the latter to happen at end of file.
  39.  
  40.